<template>
  <div class="article-page">
    <div
      v-for="item in list"
      :key="item.id"
      @click="fn1"
      class="article-item">
      <div class="head">
        <img :src="item.creatorAvatar" alt="" />
        <div class="con">
          <p class="title">{{ item.stem }}</p>
          <p class="other">{{ item.creatorName }} | {{ item.createdAt }}</p>
        </div>
      </div>
      <div class="body">
        {{ item.content }}
      </div>
      <div class="foot">点赞 {{ item.likeCount }} | 浏览 {{ item.views }}</div>
    </div>
  </div>
</template>

<script>
// 导入axios
import axios from 'axios'
export default {
  name: 'ArticlePage',
  data() {
    return {
      list: []
    }
  },
  methods: {
    fn1 () {
      // 跳转到文章详情的路由
      // this.$router.push('/detail')

      // 如果要携带参数写完整写法
      // $router 和 $route
      // $router用来做跳转 $route用来做取值
      // this.$router.push({
      //   // 要跳转的路径
      //   path: '/detail',
      //   // 传递query参数
      //   query: {
      //     name: 'jack',
      //     age: 16
      //   }
      // })

      // 如果跳转时要传参，也可以用name作为跳转
      // 建议如果要携带参数用name
      this.$router.push({
        // 要跳转的路由名字
        name: 'detail',
        // 传递query参数
        query: {
          name: 'jack',
          age: 16,
          gender: true
        }
      })

      // 可以,它类似于get请求，都是把参数拼接上去
      // 所以你可以自己拼接跳转，效果一样
      // this.$router.push('/detail?name=jack&age=16')
    },

    fn2 () {
      // params必须用完整形式
      // 为什么跳转如果要携带参数用name
      // 因为如果用path，不支持params参数
      // 所以建议用name，因为name既支持query参数也支持params参数

      // 区别1： query传的网址上会看到参数，params传的网址上看不到
      // 区别2： query传的参数在网址上，所以一刷新还在，params的参数是在内存中的，所以一刷新就没了
              // query刷新不管之前是什么数据都会变字符串，params是直接不能刷新刷新数据就没了
      this.$router.push({
        name: 'detail',
        params: {
          name: 'jack',
          age: 16
        }
      })
    }
  },
  async created () {
    // 发请求
    const res = await axios({
      url: 'https://mock.boxuegu.com/mock/3083/articles'
    })

    this.list = res.data.result.rows
  }
};
</script>
<style lang="less" scoped>
.article-page {
  background: #f5f5f5;
}
.article-item {
  margin-bottom: 10px;
  background: #fff;
  padding: 10px 15px;
  .head {
    display: flex;
    img {
      width: 40px;
      height: 40px;
      border-radius: 50%;
      overflow: hidden;
    }
    .con {
      flex: 1;
      overflow: hidden;
      padding-left: 15px;
      p {
        margin: 0;
        line-height: 1.5;
        &.title {
          text-overflow: ellipsis;
          overflow: hidden;
          width: 100%;
          white-space: nowrap;
        }
        &.other {
          font-size: 10px;
          color: #999;
        }
      }
    }
  }
  .body {
    font-size: 14px;
    color: #666;
    line-height: 1.6;
    margin-top: 10px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }
  .foot {
    font-size: 12px;
    color: #999;
    margin-top: 10px;
  }
}
</style>